home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / oper_sys / emerald / emrldsys.lha / Language / Compiler / sequence.h < prev    next >
C/C++ Source or Header  |  1990-08-16  |  974b  |  40 lines

  1. /*
  2.  * @(#)sequence.h    1.3  7/9/87
  3.  */
  4. #ifndef sequence_h
  5. #define sequence_h
  6. #ifndef nodes_h
  7. #include "nodes.h"
  8. #endif
  9.  
  10. #define Sequence_For(R,S) \
  11.     { \
  12.     register int z__z; \
  13.     if ((S) != NULL) \
  14.         for (z__z = (S)->firstChild; z__z < (S)->nChildren; z__z++) {\
  15.         (R) = (S)->b.children[z__z];
  16. #define Sequence_Next\
  17.         }\
  18.     }
  19. #define Sequence_ReverseFor(R,S) \
  20.     { \
  21.     register int z__z; \
  22.     int z__y; \
  23.     if ((S) != NULL) \
  24.         for (z__z = (S)->nChildren - 1; z__z >= (z__y = (S)->firstChild); z__z--) {\
  25.         (R) = (S)->b.children[z__z];
  26.  
  27. NodePtr Sequence_Add(/* s, n */);
  28. /* NodePtr *s, n; */
  29. NodePtr Sequence_AddFirst(/* s, n */);
  30. /* NodePtr *s, n; */
  31. #define Sequence_Length(s) (((s) == NULL) ? 0 : (int)((s)->nChildren - (s)->firstChild))
  32. #define isASequence(s) ((s) == NULL ? 1 : (s)->tag == T_SEQUENCE)
  33.  
  34. void Sequence_RemoveSeparators(/* s */);
  35. /* NodePtr s; */
  36. NodePtr Sequence_Construct(/* n, first */);
  37. /* int n; NodePtr first; */
  38. void Sequence_Free();
  39. #endif
  40.